【FFmpeg】使用 ffmpeg 命令实现直播推拉流 ( 推流和拉流简介 您所在的位置:网站首页 ffmpeg安装成功后不能用 MAC 【FFmpeg】使用 ffmpeg 命令实现直播推拉流 ( 推流和拉流简介

【FFmpeg】使用 ffmpeg 命令实现直播推拉流 ( 推流和拉流简介

2024-07-11 04:03| 来源: 网络整理| 查看: 265

文章目录 一、推流和拉流简介1、直播推流和拉流操作2、直播推流和拉流涉及到的软件3、推流 -> 拉流 流程 二、流媒体服务器搭建1、相关文件准备2、创建 ECS 云服务器实例3、配置安全组4、使用 WinSCP 上传流媒体服务器软件及配置脚本5、使用 SecureCRT 连接服务器6、搭建流媒体服务器 三、使用 ffmpeg 命令进行推流操作四、使用 ffplay 命令进行拉流操作五、使用 ffmpeg 命令进行拉流操作

在这里插入图片描述

博客总结 :

ffmpeg 推流命令 : ffmpeg -re -i input.mp4 -c copy -f flv rtmp://39.105.129.233/myapp/ ffplay 拉流命令 : ffplay rtmp://39.105.129.233/myapp/ ffmpeg 拉流命令 : ffmpeg -i rtmp://39.105.129.233/myapp/ -c copy output.flv 一、推流和拉流简介 1、直播推流和拉流操作

FFmpeg 工具可以用于 直播 的 推流和拉流 操作 ;

推流 是 将本地的音视频流推送到流媒体服务器上 , 如 : 主播将本地电脑上的画面推流到直播平台的流媒体服务器上 ;拉流 是 拉流是从流媒体服务器上接收音视频流并在本地播放或处理的过程 , 如 : 用户 观看直播平台直播时 , 从流媒体服务器上实时获取直播内容 ; 2、直播推流和拉流涉及到的软件

上述操作涉及到 3 个软件 :

推流端软件流媒体服务器拉流端软件 3、推流 -> 拉流 流程

流媒体服务器 在 推流 和 拉流 操作中 , 扮演者重要的角色 , 其主要任务 是 将视频 和 音频等多媒体内容进行 编解码 和 传输 ;

推流 时 , 推流软件 将 音视频 编码 , 传输给 流媒体服务器 ;流媒体服务器 接收 推流的数据 , 先进行解码 进行各种处理 , 然后再进行编码传输给 拉流端 ;拉流 时 , 拉流软件 将 从 流媒体服务器 接收的 音视频编码 数据 进行解码 , 然后进行播放 ; 二、流媒体服务器搭建

参考如下博客搭建流媒体服务器 :

【Android RTMP】RTMP 直播推流服务器搭建 ( Ubuntu 18.04.4 虚拟机 )【Android RTMP】RTMP 直播推流 ( 阿里云服务器购买 | 远程服务器控制 | 搭建 RTMP 服务器 | 服务器配置 | 推流软件配置 | 直播软件配置 | 推流直播效果展示 )【Android RTMP】RTMP 直播推流阶段总结 ( 服务器端搭建 | Android 手机端编码推流 | 电脑端观看直播 | 服务器状态查看 )【Android RTMP】安卓直播推流总结 ( 直播服务器搭建 | NV21 图像采集 | H.264 视频编码 | PCM 音频采集 | AAC 音频编码 | RTMP 包封装推流 ) 1、相关文件准备

在 Android_RTMP博客资料 - CSDN 下载 页面 , 可以下载 Ubuntu 系统 搭建 流媒体服务器 需要的 各种工具和服务器软件 ;

主要是需要前两个软件 ;

在这里插入图片描述

这是需要上传到 Ubuntu 服务器上需要配置的软件 ;

在这里插入图片描述

2、创建 ECS 云服务器实例

进入 阿里云服务器 控制台 云服务器 ECS 页面 https://ecs.console.aliyun.com/home , 点击 " 创建实例 " 按钮 ,

在这里插入图片描述

选择 自定义购买 , 抢占式实例 ( 最便宜 ) , 华北 2 ( 北京 ) 区域 , 选择一个默认交换机 ;

在这里插入图片描述

实例 通过 选择 1vCPU 筛选 , 选择第一个实例 , 这个便宜 ;

在这里插入图片描述

选择 Ubuntu 系统 镜像 , 版本号 18.04 64 位 的 ;

在这里插入图片描述

设置 20 G 的云盘 , 能减少费用 ;

在这里插入图片描述

选择自定义密码 , 为 root 用户设置 Han@123456 密码 , 要求必须设置 大小写字母 , 特殊字符 和 数字 ; 在这里插入图片描述

设置 今天晚上 自动释放实例 , 写完博客演示完就可以 ; 在这里插入图片描述

点击 " 确认下单 " 按钮 , 即可创建实例成功 ; 注意 确保 账户中有 余额 , 否则无法创建该实例 , 冲 10 块钱就行 ;

在这里插入图片描述 在 实例与镜像 中 , 可以查看刚才创建的实例 ; 在这里插入图片描述

3、配置安全组

选择 " 网络与安全 " 下面的 安全组 选项 , 点击 管理规则 链接 ,

在这里插入图片描述

在 " 入方向 " 配置 TCP 协议的 8080 和 1935 端口 , 这是为 流媒体服务器 设置的端口 ; ( 也可以设置别的端口 , 不过流媒体配置脚本也需要对应修改 )

在这里插入图片描述

点击 实例 最右侧的 在这里插入图片描述 按钮 , 选择 网络和安全组 下的 修改安全组 选项 ,

在这里插入图片描述

在 弹出的对话框中 , 可以选择刚才设置了 入方向配置 TCP 协议 8080 和 1935 端口 的 安全组 ;

设置了该安全组 , 才能在 流媒体服务器 中使用这两个端口 ;

在这里插入图片描述

4、使用 WinSCP 上传流媒体服务器软件及配置脚本

WinSCP 工具在 Android_RTMP博客资料\002_远程Linux控制工具\linux_tools\winscp514 目录下 ; ( 这是 在 Android_RTMP博客资料 - CSDN 下载 页面 中下载的博客资料 )

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

5、使用 SecureCRT 连接服务器

实例 的 公网 IP 是 39.105.129.233 ,

在这里插入图片描述

连接 39.105.129.233 地址 , 使用 root 用户名 ,

在这里插入图片描述

选择 接收并保存 ; 在这里插入图片描述

输入密码 Han@123456 , 并保存密码 ;

点击 " 确定 " 按钮 , 开始连接 ;

在这里插入图片描述

连接后 , 可以查看 root 用户目录下的文件 , 包括之前上传的一系列的 流媒体服务器 软件相关的文件 ;

在这里插入图片描述

6、搭建流媒体服务器

直接执行 rtmp_server_build.sh 脚本文件 , 即可完成服务器搭建 ;

执行

chmod 777 rtmp_server_build.sh

命令 , 为 rtmp_server_build.sh 脚本文件赋予执行权限 ;

在这里插入图片描述

执行

./rtmp_server_build.sh

命令 , 开始进行流媒体服务器配置 ; 期间会提示几次 输入 Y 按回车 ;

显示如下内容 , 说明执行完毕 ;

在这里插入图片描述

当前 云服务器 ECS 公网 IP 是 39.105.129.233 ;

在这里插入图片描述

则 流媒体 服务器的 HTTP 状态查看地址是 http://39.105.129.233:8080/stat , 在浏览器访问该地址 , 可以查看 流媒体 服务器状态 ;

在这里插入图片描述

在 http://39.105.129.233:8080/ 地址可以查看直播内容 ;

在这里插入图片描述

三、使用 ffmpeg 命令进行推流操作

执行

ffmpeg -re -i input.mp4 -c copy -f flv rtmp://39.105.129.233/myapp/

命令 , 将本地的 input.mp4 推流到流媒体服务器中 , 开始推流 ;

-re 参数 设置 以实时的速度 读取 输入文件 , 如 : 输入视频的长度是 3 分钟 , 那么 使用 3 分钟的时间来处理这个视频 , 不能用最快速度处理完 , 该设置确保了推流的速度与视频播放的速度相匹配 ;-i input.mp4 参数 设置 输入文件名称是 input.mp4 , 此处也可以是 实时的录屏 ;rtmp://39.105.129.233/myapp/ 参数 , rtmp 是 流媒体协议 , 39.105.129.233 是流媒体服务器 , myapp 是在 流媒体服务器 的 nginx.conf 中配置的 rtmp / server / application 配置中配置的应用名称 ; rtmp { server { listen 1935; application myapp { live on; } } }

直播的地址不只是 rtmp://39.105.129.233/myapp/ 地址 , 后面可以追加内容 , 如

rtmp://39.105.129.233/myapp/0 rtmp://39.105.129.233/myapp/9527 rtmp://39.105.129.233/myapp/888

这些地址也是可以使用的 , 随后拉流的时候也使用相同的地址进行拉流 ;

在这里插入图片描述

在这里插入图片描述

四、使用 ffplay 命令进行拉流操作

在另一个窗口 , 执行

ffplay rtmp://39.105.129.233/myapp/

命令 , 开始拉流 播放 ; 效果如下 :

在这里插入图片描述

推流完毕后 , 推流的命令行直接退出 , 拉流的命令行需要手动退出 ;

在这里插入图片描述

此时 在 服务器状态上 仍然显示有直播流 ;

在这里插入图片描述

将 拉流 的 命令行 使用 Ctrl + C 强制退出 ,

在这里插入图片描述

此时服务器的流状态显示未 0 ;

在这里插入图片描述

五、使用 ffmpeg 命令进行拉流操作

在另一个窗口 , 执行

ffmpeg -i rtmp://39.105.129.233/myapp/ -c copy output.flv

命令 , 开始拉流 ;

在这里插入图片描述

执行过程如下 , 期间不会播放直播画面 ;

在这里插入图片描述

在 拉流 命令行界面 , 使用 Ctrl + C 退出 , 拉流完成后 , 会自动将推流内容保存到 output.flv 文件中 ;

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有